package com.hmily.dubbo.consumer.sync;

import com.hmily.dubbo.api.DelayFacade;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ReferenceConfig;
import org.apache.dubbo.config.RegistryConfig;

import java.io.IOException;

/**
 * <h1>延迟暴露服务</h1>
 *
 * @author hmilyylimh
 *         ^_^
 * @version 0.0.1
 *         ^_^
 * @date 2021-11-07
 *
 */
public class DelayConsumerApplication {

    public static void main(String[] args) throws IOException {
        // 设置应用服务名称
        ApplicationConfig applicationConfig = new ApplicationConfig("dubbo-consumer");
        // 设置注册中心的地址
        RegistryConfig registryConfig = new RegistryConfig("zookeeper://127.0.0.1:2181");

        // 创建引用 DelayFacade 这个服务的对象
        ReferenceConfig<DelayFacade> referenceConfig = new ReferenceConfig<>();
        referenceConfig.setApplication(applicationConfig);
        referenceConfig.setRegistry(registryConfig);
        referenceConfig.setInterface(DelayFacade.class);

        // 直接拿到引用的代理对象，然后进行远程调用
        DelayFacade delayFacade = referenceConfig.get();
        System.out.println(delayFacade.delay("delay"));

        // 1、在服务提供方启动之后的 10s 内，启动消费方的话，是无法调用成功的，因为服务提供方需要在 10s 之后才注册服务到注册中心

        // 2、消费方在 10s 之后再来请求一次，就可以调用通了服务提供方了

        // 阻塞等待
        System.in.read();
    }
}
